package com.A1908.util;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Properties;
import javax.mail.*;

public class GetEmail {
    public void getEmail() throws MessagingException, IOException {

        //创建属性对象
        Properties p = new Properties();
        p.put("mail.imap.auth.login.disable", "true");//身份验证
        p.put("mail.imap.host", "imap.qq.com");//主机
        p.put("mail.store.protocol", "imap");//协议
        p.put("mail.imap.port", "993");//端口
        p.put("mail.smtp.starttls.enable", "true");

        //qq邮箱需要SSL加密
        p.put("mail.smtp.socketFactory.port", "993");
        p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        //创建会话
        Session session = Session.getInstance(p);
        //存储对象
        Store store = session.getStore("imap");
        //连接
        store.connect("imap.qq.com","344497521@qq.com","xhegyxscvkxmcbbc");

        //创建目录对象
        Folder folder = store.getFolder("Inbox");
        //打开模式：只读
        folder.open(Folder.READ_ONLY);

        //获取消息，数组
        Message[] ms = folder.getMessages();

        //预提取对象
        FetchProfile fp = new FetchProfile();
        //属性
        fp.add(FetchProfile.Item.ENVELOPE);
        //内容
        fp.add(FetchProfile.Item.CONTENT_INFO);
        //标志属性
        fp.add(FetchProfile.Item.FLAGS);
        //x-mailer属性
        fp.add("x-mailer");

        //提取
        folder.fetch(ms, fp);

        //遍历
        for(Message m : ms) {
            String title = m.getSubject();//邮件的标题
            int size = m.getSize();//邮件的大小
            String date = new SimpleDateFormat("yyyy-MM-dd HH：mm：ss").format( m.getSentDate());//邮件的接受时间

            System.out.println("标题："+title);
            System.out.println("大小："+size);
            System.out.println("接受时间："+date);

            Object obj = m.getContent();//获取邮件内容
            //内容类型判断
            //纯文本
            if(m.isMimeType("text/plain") || m.isMimeType("text/html")) {
                System.out.println("邮件内容："+obj);
            }
            //多个组件内容
            if(m.isMimeType("multipart/*")) {
                //强制转换为多个组件类型
                Multipart part = (Multipart) obj;
                //遍历每个组件
                for(int i=0;i<part.getCount();i++) {
                    //每个组件的内容
                    BodyPart body = part.getBodyPart(i);
                    //判断组件内容的类型
                    //纯文字
                    if(body.isMimeType("text/plain") || body.isMimeType("text/html") ) {
                        System.out.println("邮件内容："+body.getContent());
                    }
                }
            }
        }
    }
}
